#include"myfunc.h"
#include <cfloat>
#include <QDebug>

MyFunc::MyFunc()
{
    //初始化
    this->mycolor="#000";
    this->mystyle=1;
    this->mymax=10;
    this->mymin=-10;
    this->mystep=100000;
    this->canDraw=false;
}

void MyFunc::calculate()
{
    this->canDraw=false;//先不允许画
    double step=(mymax-mymin)/mystep;//自定义步长
    mypoint.clear();//清空存储坐标点的 mypoint 容器
    if(myexpr[0]=='y')
    {
        for(double x=mymin;x<mymax;x+=step)
        {
            double y;
            //如果getResult()函数返回true，说明计算成功，将x和y作为一对坐标点插入mypoint容器中
            //否则，插入一对特殊的最大值(DBL_MAX)和最小值(DBL_MIN)
            if(Analyse::getResult(mypostExpr,y,'x',x))
                mypoint.push_back(std::make_pair(x,y));
            else
                mypoint.push_back(std::make_pair(DBL_MAX,DBL_MIN));//也就是该点不存在，超出定义域
        }
    }
    else if(myexpr[0]=='x')
    {
        for(double y=mymin;y<mymax;y+=step)
        {
            double x;
            if(Analyse::getResult(mypostExpr,x,'y',y))
                mypoint.push_back(std::make_pair(x,y));
            else
                mypoint.push_back(std::make_pair(DBL_MAX,DBL_MIN));
        }
    }
    this->canDraw=true;
}
